// 整型
// fn main() {
//     let a : u8 = 255;
//     let b = a.wrapping_add(20);
//     let c = a.overflowing_add(40);
//     println!("{}", b);  // 19
//     println!("{}", c.1);  // 19
// }
// 浮点型
// fn main() {
//     let _x = 2.0; // 默认f64
//     let _y: f32 = 3.0; // f32
// }

// fn main() {
//     // 断言0.1 + 0.2与0.3相等
//     assert!(0.1 + 0.2 == 0.3);
// }
// fn main() {
//     let abc: (f32, f32, f32) = (0.1, 0.2, 0.3);
//     let xyz: (f64, f64, f64) = (0.1, 0.2, 0.3);

//     println!("abc (f32)");
//     println!("   0.1 + 0.2: {:x}", (abc.0 + abc.1).to_bits());
//     println!("         0.3: {:x}", (abc.2).to_bits());
//     println!();

//     println!("xyz (f64)");
//     println!("   0.1 + 0.2: {:x}", (xyz.0 + xyz.1).to_bits());
//     println!("         0.3: {:x}", (xyz.2).to_bits());
//     println!();

//     assert!(abc.0 + abc.1 == abc.2);
//     assert!(xyz.0 + xyz.1 == xyz.2);
// }

// 出于防御性编程的考虑，可以使用 is_nan() 等方法，可以用来判断一个数值是否是 NaN ：
// fn main() {
//     if (-42.0_f32).sqrt().is_nan() {
//         println!("未定义的数学行为")
//     }
// }

fn main() {
    // 加法
    let sum: i32 = 5 + 10;
    println!("sum:{}", sum);
    // 减法
    let difference: f64 = 95.5 - 4.3;
    println!("difference:{}", difference);
    // 乘法
    let product: i32 = 4 * 30;
    println!("product:{}", product);
    // 除法
    let quotient: f64 = 56.7 / 32.2;
    println!("quotient:{}", quotient);
    // 除法
    let quotient: i32 = 43 / 5;
    println!("quotient:{}", quotient);
    // 求余
    let remainder: i32 = 43 % 5;
    println!("remainder:{}", remainder)
}